#include <iostream>
#include "linearlist.h"
using namespace std;

int main()
{
    LinearList ll(20);

    // 增加
    for (int i = 0; i < 19; i++)
    {
        if (!ll.Append(i))
        {
            cout << "Insert failed!" << endl;
            return 1;
        }
    }

    // 输出长度和容量
    printf("len: %d, cap: %d\n", ll.Len(), ll.Cap());
    ll.Display();

    // 删除
    for (int i = 4; i < 9; i++)
    {
        ll.Delete(4);
    }
    printf("deleted, len: %d, cap: %d\n", ll.Len(), ll.Cap());
    ll.Display();

    // 再增加, 并排序
    ll.Append(87);
    ll.Append(76);
    ll.Append(-43);
    ll.Sort();
    ll.Display();

    // 插入
    cout << "inserting" << endl;
    ll.Insert(3, 4);
    ll.Display();

    // 访问, 查找
    cout << "-43 index: " << ll.Query(-43) << endl;
    cout << "index 15: " << ll.Index(15) << endl;

    // 测试越界增加
    for (int i = 0; i < 8; i++)
    {
        if (!ll.Append(i * 2))
        {
            cout << "Insert Failed!" << endl;
            break;
        }
    }

    // 调用copy构造函数
    LinearList ll2 = ll;
    ll2.Display();
    cout << ll2.IsOverflow() << endl;

    const int *li = ll2.List();
    cout << li[2] << endl;
}